const { url } = require('../../config/index.js') // 接口请求地址

Page({
  // 页面的初始数据
  data: {
    showDots: true, // 是否展示swiper指示点
    dotsColor: 'rgba(0, 0, 0, .3)', // 指示点颜色
    dotsActColor: '#E7251A', // 指示点激活颜色
    duration: 0, // swiper动画时长
    mealData: [],
    actType: '', // 活动类型 4180225：买二送一 4180228：买一送一
    actId: '', // 活动id
    totalPrice: 0, // 总价
    totalName: '', // 名字
    swiperIndex: [], // 存放swiper索引的数组
    
    selectGoods: null, // 当前的多规格选择
    showSelect: false, // 显示多规格选择
    sIndex: null,
    multiTotal: 0, // 多规格需要多付的价格
    multiSelect1: [], // 多规格商品选择索引(弹出层‘规格’选择结果‘索引’)
    multiSelect: [], // 所有多规格商品选择索引 (商品索引)
    multiOptions: [], // 对应商品所选的多规格选项, 任意商品滑动切换，清空对应数据（弹出层选择结果）

  },
  // 数据处理
  dealData () {
    // 初始所有swiper的索引(默认全部选择第一个)
    let len = this.data.mealData.length
    let arr = []
    for (let a = 0; a < len; a++) {
      arr.push(0)
    }
    // 所有商品默认选择第第一个，并计算价格

    let total = 0, name = ''
    this.data.mealData.forEach((e, i) => {
      name += '+' + e[0].SERV_SUBJECT // 商品名
      // 4180225：买二送一 取前两个价格 4180228：买一送一只取第一个价格
      if ((this.data.actType == 4180225 && i == 2) || (this.data.actType == 4180228 && i == 1)) return 
      total += Number(e[0].PRICE)
    })

    this.setData({ 
      totalPrice: total,
      totalName: name.slice(1),
      swiperIndex: arr,
      duration: 500 // 索引处理好后，给swiper加上过度动画
    })
    // console.log(this.data.swiperIndex)
  },
  // swiper 滑动
  swiperChange (e) {
    let thisIndex = e.detail.current // 当前所滑动的swiper滑到第几个
    let index = e.currentTarget.dataset.index // 当前操作的是第几个swiper
    let item = e.currentTarget.dataset.item // 当前操作的数据
    let tran = this.data.swiperIndex // 
    let multiOptions = this.data.multiOptions
    let multiSelect = this.data.multiSelect
    tran[index] = thisIndex
    multiSelect[index] = []
    // console.log(this.data.swiperIndex)
    
    let total = 0, name = ''
    this.data.mealData.forEach((e, i) => {
      name += '+' + e[this.data.swiperIndex[i]].SERV_SUBJECT // 商品名
      // 4180225：买二送一 取前两个价格 4180228：买一送一只取第一个价格
      if ((this.data.actType == 4180225 && i == 2) || (this.data.actType == 4180228 && i == 1)) return
      total += Number(e[this.data.swiperIndex[i]].PRICE)
    })

    // 增加多规格价格
    // total += this.data.multiTotal

    multiOptions[index] = null // 滑动清空已选多规格
    this.setData({
      multiSelect: multiSelect,
      totalPrice: total,
      totalName: name.slice(1),
      swiperIndex: tran,
      multiOptions: multiOptions
    })
    this.multiTotalCompte()
    console.warn('第'+ index +'件商品选了第' + this.data.swiperIndex[index] + '项')
  },
  // 确认套餐
  selectok () {
    // 多规格是否选择
    let a = this.data.mealData
    let b = this.data.swiperIndex
    let c = this.data.multiOptions
// console.warn(a)

    for (let i = 0; i < a.length; i++) {
      // console.log(a[i])
      // 当前商品有多规格选项 且 没有选择多规格
      if (a[i][b[i]].ATTR_LIST.length && !c[i]) {
        wx.showModal({
          title: '提示',
          showCancel: false,
          content: '您还未选择第' + (i + 1) + '件商品规格',
        })
        return
      }
    }
    let packName = '' // 最终选择商品名拼接
    let multi = this.data.multiSelect
    a.forEach((e, i) => {
      packName += e[b[i]].SERV_SUBJECT
      if (e[b[i]].ATTR_LIST.length){
        e[b[i]].ATTR_LIST.forEach((e2, i2) => {
          packName += ' (' + e2.ATTRIBURE[multi[i][i2]].SERV_NAME + ') '
        })
      }
      packName += ' '
      // console.log(e[b[i]])
    })
    console.warn(packName)
    wx.showModal({
      title: '确认套餐',
      content: packName,
      success: (res) => {
        if (res.confirm) {

          wx.setStorageSync('activity2to1', {
            mealData: this.data.mealData,
            multiOptions: this.data.multiOptions,
            actType: this.data.actType, // 活动类型 4180225：买二送一 4180228：买一送一
            totalPrice: this.data.totalPrice + this.data.multiTotal, // 总价
            totalName: this.data.totalName, // 名字
            swiperIndex: this.data.swiperIndex, // 存放swiper索引的数组
            CAFE_ACTIVITY_ID: this.data.actId // 活动id
          })
          // console.log(JSON.stringify({
          //   mealData: this.data.mealData,
          //   actType: this.data.actType, // 活动类型 4180225：买二送一 4180228：买一送一
          //   totalPrice: this.data.totalPrice, // 总价
          //   totalName: this.data.totalName, // 名字
          //   swiperIndex: this.data.swiperIndex // 存放swiper索引的数组
          // }))
          wx.redirectTo({
            url: '/pages/firmOrder/firmOrder?type=activity',
          })
        }
      }
    })
  },
  // 获取活动商品
  // ACT_TYPE 4180225：买二送一 4180228：买一送一
  getVipAct(id) {
    wx.request({
      url: url + 'CafeActivity/getActivityServiceDetailList.action',
      method: 'POST',
      header: {
        'content-type': 'application/x-www-form-urlencoded'
      },
      data: {
        CAFE_ACTIVITY_ID: id
      },
      success: res => {
        if (res.data.STATUS_CODE === 1) {
          let mealData = null

          // res.data.ACT_TYPE = 4180228 

          // 买二送一
          if (res.data.ACT_TYPE == 4180225) {
            mealData = [res.data.ONE, res.data.TWO, res.data.THREE]
          // 买一送一
          } else {
            mealData = [res.data.ONE, res.data.TWO]
          }

          // 商品信息
          this.setData({ 
            mealData: mealData,
            actType: res.data.ACT_TYPE
          })
          // banner索引
          this.dealData()
        }
      }
    })
  }, 
  // 选规格点击
  selectType (e) {
    let info = e.currentTarget.dataset.select
    let sindex = e.currentTarget.dataset.sindex
    // console.log(sindex)
    console.log(this.data.multiSelect)
    let mIndex = []
    // 初始默认全部选择第一项
    // console.error(this.data.multiSelect[sindex].length)
    if (!this.data.multiSelect[sindex] || this.data.multiSelect[sindex].length == 0) {
      mIndex = []
      info.ATTR_LIST.forEach((e, i) => {
        mIndex.push(0)
      })
      console.warn(mIndex)
    // 已经选过则显示选过的内容
    } else {
      mIndex = this.data.multiSelect[sindex]
    }

    this.setData({
      selectGoods: info,
      showSelect: true,
      // multiSelect: mIndex,
      multiSelect1: mIndex,
      sIndex: sindex
    })
  },
  // 关闭
  tabBg() {
    this.setData({
      selectGoods: null,
      showSelect: false
    })
  },
  // 多规格商品索引切换
  pushMultiIndex(e) {
    let info = e.currentTarget.dataset
    console.log(info)
    let trans = this.data.multiSelect1
    trans[info.first] = info.second
    this.setData({ multiSelect1: trans })
  },
  // 多付金额计算
  multiTotalCompte () {
  
    let ml = this.data.multiOptions
    let multiTotal = 0
    for (let i = 0; i < ml.length; i++) {

      // 2送1 ， 1送1 最后一个不算价格 
      if ((this.data.actType == 4180225 && i == 2) || (this.data.actType == 4180228 && i == 1)) return

      if (ml[i]) {
        for (let j = 0; j < ml[i].length; j++) {

          console.log(i)
          multiTotal += Number(ml[i][j].moreMoney)
        }
      }
    }
    this.setData({ multiTotal: multiTotal})
  },
  // 添加多规格
  makeSureAddMulti (e) {
    let arr = this.data.selectGoods, // 当前操作的多规格商品
      index = this.data.multiSelect1, // 弹出层选择索引信息
      handleIndex = e.currentTarget.dataset
    // console.warn(handleIndex)
    // console.log(e)
    // console.log(arr)
    // console.log(index)
    let saveMulti = []
    let multiSelect = this.data.multiSelect
    multiSelect[this.data.sIndex] = index
    arr.ATTR_LIST.forEach((e, i) => {
      let x = {
        "TYPE": e.TYPE,
        "ATTRIBURE": e.ATTRIBURE[index[i]].SERV_ID,
        "moreMoney": e.ATTRIBURE[index[i]].PRICE // 改选择需要多付的钱
      }
      saveMulti.push(x)
      console.log(saveMulti)
    })

    let ml = this.data.multiOptions
    ml[this.data.sIndex] = saveMulti

    this.setData({ multiOptions: ml, multiSelect: multiSelect })
    this.multiTotalCompte()
    this.tabBg()
  },
  // 生命周期函数--监听页面加载
  onLoad: function (options) {
    let id = options.actid
    this.setData({actId: id})
    // 获取活动商品
    this.getVipAct(id)
  },
  // 生命周期函数--监听页面初次渲染完成
  onReady: function () {
  },
  // 生命周期函数--监听页面显示
  onShow: function () {
  },
  // 生命周期函数--监听页面隐藏
  onHide: function () {
  },
  // 生命周期函数--监听页面卸载
  onUnload: function () {
  },
  // 页面相关事件处理函数--监听用户下拉动作
  onPullDownRefresh: function () {
  },
  // 页面上拉触底事件的处理函数
  onReachBottom: function () {
  },
  // 用户点击右上角转发
  onShareAppMessage: function () {
  },
  // 页面滚动触发事件的处理函数
  onPageScroll: function () {
  },
  // 当前是 tab 页时，点击 tab 时触发
  onTabItemTap () {
  }
})
